/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package biblioteca;

/**
 *
 * @author SUPORTE2
 */
public class Main {

    public static void main(String args[]) {
        int op1 = 0;
        int op2 = 0;
        int op3 = 0;
        int USUARIOS = 10;
        int EXEMPLARES = 10;
        int contUsu = 0;
        int contExe = 0;

        Usuario[] usuarios = new Usuario[USUARIOS];
        Exemplar[] exemplares = new Exemplar[EXEMPLARES];

        do {
            System.out.println("\n1. Usuário");
            System.out.println("2. Acervo");
            System.out.println("3. Operação");
            System.out.println("4. Relatórios");
            System.out.println("5. Sair");
            op1 = Integer.parseInt(Utilitario.lerTeclado("\nDigite a opção: "));

            switch (op1) {
                //GERENCIAR USUARIO
                case 1:
                    System.out.println("\n*** GERENCIAR USUÁRIO ***");
                    System.out.println("1. Incluir");
                    System.out.println("2. Consultar");
                    System.out.println("3. Excluir");
                    op2 = Integer.parseInt(Utilitario.lerTeclado("\nDigite a opção: "));

                    switch (op2) {
                        //INCLUIR USUÁRIO
                        case 1:
                            String nome;
                            String cpf;
                            String email;
                            int qtdEmprestada;

                            System.out.println("1. Aluno");
                            System.out.println("2. Professor");
                            op3 = Integer.parseInt(Utilitario.lerTeclado("\nDigite a opção: "));

                            switch (op3) {
                                //INCLUIR UM ALUNO
                                case 1:
                                    do {
                                        nome = Utilitario.lerTeclado("Nome:\t");
                                        cpf = Utilitario.lerTeclado("CPF:\t");
                                        email = Utilitario.lerTeclado("Email:\t");
                                        qtdEmprestada = Integer.parseInt(Utilitario.lerTeclado("Quantidade Emprestada:\t"));
                                        if (!Utilitario.validarCPF(cpf)) {
                                            System.out.println("CPF Inválido!");
                                        } else if (!Utilitario.validarEmail(email)) {
                                            System.out.println("EMAIL Inválido!");
                                        } else {
                                            usuarios[contUsu] = new Aluno(contUsu, nome, cpf, email, qtdEmprestada);
                                            /*
                                             usuarios[contUsu].setId(contUsu);
                                             usuarios[contUsu].setNome(nome);
                                             usuarios[contUsu].setCpf(cpf);
                                             usuarios[contUsu].setEmail(email);
                                             usuarios[contUsu].setQtdeEmprestada(qtdEmprestada);
                                             */
                                            contUsu++;

                                            System.out.println("USUÁRIO CADASTRADO COM SUCESSO!!!\n");

                                        }
                                    } while (!Utilitario.validarCPF(cpf) || !Utilitario.validarEmail(email));
                                    break;

                                //INCLUIR UM PROFESSOR
                                case 2:
                                    do {
                                        nome = Utilitario.lerTeclado("Nome:\t");
                                        cpf = Utilitario.lerTeclado("CPF:\t");
                                        email = Utilitario.lerTeclado("Email:\t");
                                        qtdEmprestada = Integer.parseInt(Utilitario.lerTeclado("Quantidade Emprestada:\t"));
                                        if (!Utilitario.validarCPF(cpf)) {
                                            System.out.println("CPF Inválido!");
                                        } else if (!Utilitario.validarEmail(email)) {
                                            System.out.println("EMAIL Inválido!");
                                        } else {
                                            usuarios[contUsu] = new Professor(contUsu, nome, cpf, email, qtdEmprestada);
                                            /*
                                             usuarios[contUsu].setId(contUsu);
                                             usuarios[contUsu].setNome(nome);
                                             usuarios[contUsu].setCpf(cpf);
                                             usuarios[contUsu].setEmail(email);
                                             usuarios[contUsu].setQtdeEmprestada(qtdEmprestada);
                                             */
                                            contUsu++;

                                            System.out.println("USUÁRIO CADASTRADO COM SUCESSO!!!\n");

                                        }
                                    } while (!Utilitario.validarCPF(cpf) || !Utilitario.validarEmail(email));
                                    break;
                            }
                            break;


                        case 2:
                            //CONSULTA USUÁRIO
                            System.out.println("\n*** CONSULTA USUÁRIO ***");
                            int idConsulta = Integer.parseInt(Utilitario.lerTeclado("Consulta por ID:\t"));

                            if (usuarios[idConsulta] == null) {
                                System.out.println("Usuário não encontrado!\n");
                            } else {
                                if (usuarios[idConsulta] instanceof Aluno) {
                                    System.out.println("\nTipo:\tALUNO");
                                } else {
                                    System.out.println("\nTipo:\tPROFESSOR");
                                }
                                System.out.println(usuarios[idConsulta].toString());
                            }
                            break;
                        case 3:
                            //EXCLUÍ USUÁRIO
                            int idExcluir = Integer.parseInt(Utilitario.lerTeclado("Consulta por ID:\t"));

                            if (usuarios[idExcluir] == null) {
                                System.out.println("Usuário não encontrado\n");
                            } else {
                                usuarios[idExcluir] = null;
                                System.out.println("Usuário excluído com sucesso!");
                            }
                            break;
                    }

                    break;
                //GERENCIAR ACERVO
                case 2:
                    System.out.println("\n*** GERENCIAR ACERVO ***");
                    System.out.println("1. Incluir");
                    System.out.println("2. Consultar");
                    System.out.println("3. Excluir");
                    op2 = Integer.parseInt(Utilitario.lerTeclado("\nDigite a opção: "));
                    switch (op2) {
                        //INCLUIR EXEMPLAR
                        case 1:
                            String titulo;
                            int qtdeAcervo;
                            int qtdeEmprestada;
                            int volume;
                            int edicao;
                            String isbn;
                            String editora;
                            String autor;
                            String mesAno;
                            String estudio;
                            int duracao;
                            System.out.println("1. Livro");
                            System.out.println("2. Revista");
                            System.out.println("3. DVD");
                            op3 = Integer.parseInt(Utilitario.lerTeclado("\nDigite a opção: "));

                            switch (op3) {
                                //INCLUIR LIVRO
                                case 1:
                                    do {
                                        titulo = Utilitario.lerTeclado("Titulo:\t");
                                        qtdeAcervo = Integer.parseInt(Utilitario.lerTeclado("Qtde Acervo:\t"));
                                        qtdeEmprestada = Integer.parseInt(Utilitario.lerTeclado("Qtde Emprestada:\t"));
                                        volume = Integer.parseInt(Utilitario.lerTeclado("Volume:\t"));
                                        edicao = Integer.parseInt(Utilitario.lerTeclado("Edicao:\t"));
                                        isbn = Utilitario.lerTeclado("ISBN:\t");
                                        editora = Utilitario.lerTeclado("Editora:\t");
                                        autor = Utilitario.lerTeclado("Autor:\t");

                                        if (!Utilitario.validarISBN(isbn)) {
                                            System.out.println("ISBN inválido!");
                                        } else {
                                            exemplares[contExe] = new Livro(volume, edicao, isbn, editora, autor, titulo, qtdeAcervo, qtdeEmprestada);

                                            System.out.println("Livro cadastrado com sucesso!");
                                            contExe++;
                                        }
                                    } while (!Utilitario.validarISBN(isbn));
                                    break;
                                case 2:
                                    //INCLUIR REVISTA
                                    do {
                                        titulo = Utilitario.lerTeclado("Titulo:\t");
                                        qtdeAcervo = Integer.parseInt(Utilitario.lerTeclado("Qtde Acervo:\t"));
                                        qtdeEmprestada = Integer.parseInt(Utilitario.lerTeclado("Qtde Emprestada:\t"));
                                        editora = Utilitario.lerTeclado("Titulo:\t");
                                        mesAno = Utilitario.lerTeclado("Mes/Ano (JAN):\t");

                                        if (!Utilitario.validarMes(mesAno)) {
                                            System.out.println("Mês inválido!");
                                        } else {
                                            exemplares[contExe] = new Revista(editora, mesAno, titulo, qtdeAcervo, qtdeEmprestada);

                                            System.out.println("Revista cadastrada com sucesso!");
                                            contExe++;
                                        }
                                    } while (!Utilitario.validarMes(mesAno));
                                    break;

                                case 3:
                                    //INCLUIR DVD
                                    titulo = Utilitario.lerTeclado("Titulo:\t");
                                    qtdeAcervo = Integer.parseInt(Utilitario.lerTeclado("Qtde Acervo:\t"));
                                    qtdeEmprestada = Integer.parseInt(Utilitario.lerTeclado("Qtde Emprestada:\t"));
                                    estudio = Utilitario.lerTeclado("Estudio:\t");
                                    duracao = Integer.parseInt(Utilitario.lerTeclado("Duracao:\t"));

                                    exemplares[contExe] = new DVD(estudio, duracao, titulo, qtdeAcervo, qtdeEmprestada);
                                    System.out.println("DVD cadastrado com sucesso!");
                                    contExe++;
                                    break;
                            }
                        case 2:
                            //CONSULTA EXEMPLAR
                            System.out.println("\n*** CONSULTA EXEMPLAR ***");
                            int idConsulta = Integer.parseInt(Utilitario.lerTeclado("Consulta por ID:\t"));

                            if (exemplares[idConsulta] == null) {
                                System.out.println("Usuário não encontrado!\n");
                            } else {
                                if (exemplares[idConsulta] instanceof Livro) {
                                    System.out.println("\nTipo:\tLIVRO");
                                } else if (exemplares[idConsulta] instanceof Revista) {
                                    System.out.println("\nTipo:\tREVISTA");
                                } else {
                                    System.out.println("\nTipo:\tDVD");
                                }
                                System.out.println(exemplares[idConsulta].toString());
                            }
                            break;
                        case 3:
                            //EXCLUÍ EXEMPLAR
                            int idExcluir = Integer.parseInt(Utilitario.lerTeclado("Consulta por ID:\t"));

                            if (exemplares[idExcluir] == null) {
                                System.out.println("Exemplar não encontrado\n");
                            } else {
                                exemplares[idExcluir] = null;
                                System.out.println("Exemplar excluído com sucesso!");
                            }
                            break;
                    }

                    break;


                case 3:
                    System.out.println("\n*** OPERAÇÕES ***");
                    System.out.println("1. Empréstimo");
                    System.out.println("2. Devolução");
                    System.out.println("3. Multa");
                    switch (op2) {
                        case 1:
                        case 2:
                        case 3:

                    }
                case 4:
                    System.out.println("\n*** RELATÓRIOS ***");
                    System.out.println("1. Relat 1");
                    System.out.println("2. Relat 2");
                    System.out.println("3. Relat 3");
                    System.out.println("4. Relat 4");
                    System.out.println("5. Relat 5");
                    op2 = Integer.parseInt(Utilitario.lerTeclado("\nDigite a opção: "));
                    switch (op2) {
                        case 1:
                        case 2:

                            for (int i = 0; i < exemplares.length; i++) {

                                System.out.println(exemplares[i].toString());
                            }
                        case 3:
                        case 4:
                        case 5:

                    }
                case 5:
                    System.out.println("");
                default:
                    System.out.println("Digite uma opção válida.");
            }

        } while (op1 != 5);
    }
}